Consistent operating system servicing for distributed nodes

ABSTRACT

Methods, systems, and computer-readable media for deploying an updated image to nodes propagated throughout a distributed computing platform are provided. Upon receiving an indication to install a patch to an operating system residing on the nodes, an existing image of the operating system is accessed at a staging service. The staging service generates the updated image by applying the patch to the existing image. The process of applying the patch includes mounting the existing image of the operating system to a virtual machine, copying the patch to the mounted existing image, setting a command within the existing image that executes upon activating the virtual machine, and activating the virtual machine, thereby executing the command. This directs the patch to be installed. The updated image is pushed to the nodes. The nodes are configured to utilize the updated image as the operating system without performing an individual installation of the patch.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of, and claims priority to, U.S.patent application Ser. No. 12/360,686, filed Jan. 27, 2009, entitled“CONSISTENT OPERATING SYSTEM SERVICING FOR DISTRIBUTED NODES,” which isincorporated herein by reference in its entirety.

BACKGROUND

Large-scale networked systems are commonplace systems employed in avariety of settings for running applications and maintaining data forbusiness and operational functions. For instance, a data center mayprovide a variety of services (e.g., web applications, email services,search engine services, etc.). These large-scale networked systemstypically include a large number of nodes distributed throughout thedatacenter, in which each node resembles a physical machine or a virtualmachine running on a physical host. Due partly to the large number ofthe nodes that may be included within such large-scale systems,deployment of software (both operating systems (OSs) and applications)to the various nodes and maintenance of the software on each node can bea time-consuming and costly process.

Traditionally, software is installed and upgraded locally on each nodein place such that installation and updates are specific to theindividual nodes. Because the nodes will be installing the softwareupgrades individually, there is a likely chance of failure orvariability upon performing the installation. Further, other specificoperations, such as servicing or customization, may also be performed onthe individual nodes. Potentially, these operations change the state ofthe operating system that is running on a computer node, and often theoperations result in introducing indeterminism in the operating systemstate (as measured from node to node). Further, the operations appliedspecifically to each individual node may cause reliability andrepeatability issues because the operation is repeated many times, thus,increasing the chance of failure.

Accordingly, when updating thousands of nodes, there is no guaranteethat all of the nodes will be running software consistently or providinga similar operating system state. For instance, changes to a localsoftware state (e.g., operating system configuration state) may occurdue to human or software errors. Often, state changes cause the behaviorof the node to become unpredictable. Also, there is no guarantee thateach node will achieve a successful update.

By way of example, consider two machines receiving a servicing packagethat is being installed on each of the machines individually. Uponinstalling the package to the two different machines, there is no realguarantee that upon completion of the installation that both machineswill reboot in exactly the same state. This is often caused by notknowing or accounting for a difference in the initial state of eachmachine, or numerous other factors that can make the machines distinct.Thus, it is indeterminate what the final state of the machines will be.Because there is no guarantee of consistency between the machines, aservice application running thereon will execute unpredictably andprovide various users of the service application an incongruentexperience.

As such, the current solutions for installing software applications,which rely on curators of the data center to manually install thesoftware applications individually, are ad hoc solutions, arelabor-intensive, and are error-prone. Further, these current solutionsdo not guarantee a reliable result that is consistent across the datacenter. These shortcomings of manual involvement are exaggerated whenthe data center is expansive in size, comprising a multitude ofinterconnected hardware components that support the operation of amultitude of software applications.

SUMMARY

This Summary is provided to introduce concepts in a simplified form thatare further described below in the Detailed Description. This Summary isnot intended to identify key features or essential features of theclaimed subject matter, nor is it intended to be used as an aid indetermining the scope of the claimed subject matter.

Embodiments of the present invention relate to computer systems,computerized methods, and computer-readable media for deploying anupdated image to one or more nodes propagated throughout a distributedcomputing platform. Initially, the nodes represent computing devicescapable of running role instances of the service application within adistributed computing platform, where instances comprise replications ofat least one role that resembles a component program for supportingparticular functional aspects of the service application. Inembodiments, the computerized method involves receiving an indication toinstall a patch to an operating system residing on the nodes of the datacenter. Typically, an existing image of the operating system is storedat a staging service. The staging service is capable of engaging avirtual machine to generate the updated image by applying the patch tothe existing image. In one instance, generating the updated imageincludes separating the existing image into a variant state and aninvariant state of the operating system, performing an installation ofthe patch on the variant state, and recombining the variant state andthe invariant state to form the updated image.

In another instance, generating the updated image involves executing anapplication process. The application process is conducted by performingone or more of the following steps: mounting in the virtual machine theexisting image of the operating system; copying the patch to the mountedexisting image; setting a command within the existing image thatexecutes upon activating the virtual machine; activating the virtualmachine such that the command to execute is invoked, which directs thepatch to be installed; capturing a snapshot of the existing image withthe patch installed; saving the snapshot as the updated image; andutilizing the updated image for upgrading the operating system of thenodes upon receiving a subsequent indication to install a patch. Upongenerating the updated image, it may be pushed to the nodes of the datacenter. In one instance, the process of pushing involves removing thenodes to an offline condition, loading the updated image to the offlinenodes, and booting the offline nodes such that the nodes do not attemptto reinstall the operating system carried in the updated image. As aresult, the one or more nodes can utilize the updated image as theoperating system without performing an installation of the updatedimage.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present invention are described in detail below withreference to the attached drawing figures, wherein:

FIG. 1 is a block diagram of an exemplary computing environment suitablefor use in implementing embodiments of the present invention;

FIG. 2 is a block diagram illustrating a distributed computingenvironment, suitable for use in implementing embodiments of the presentinvention, that is configured to remotely install a patch to an existingimage and deploy an updated image to targeted nodes;

FIG. 3 is a graphical representation of an exemplary image of anoperating system that is separated into multiple states, in accordancewith an embodiment of the present invention;

FIG. 4 is a flow diagram showing an overall method for deploying anupdated image to one or more nodes propagated throughout a distributedcomputing platform, in accordance with an embodiment of the presentinvention; and

FIG. 5 is a flow diagram showing an overall method for upgrading anoperating system on a computing device without installing a patch at acomputing device, in accordance with an embodiment of the presentinvention.

DETAILED DESCRIPTION

The subject matter of embodiments of the present invention is describedwith specificity herein to meet statutory requirements. However, thedescription itself is not intended to limit the scope of this patent.Rather, the inventors have contemplated that the claimed subject mattermight also be embodied in other ways, to include different steps orcombinations of steps similar to the ones described in this document, inconjunction with other present or future technologies. Moreover,although the terms “step” and/or “block” may be used herein to connotedifferent elements of methods employed, the terms should not beinterpreted as implying any particular order among or between varioussteps herein disclosed unless and except when the order of individualsteps is explicitly described.

Embodiments of the present invention relate to methods, systems, andcomputer-storage media having computer-executable instructions embodiedthereon that, when executed, perform methods in accordance withembodiments hereof, for updating an operating system of a plurality ofnodes (e.g., computing devices) within the context of a distributedcomputing environment. Generally, a staging service is responsible forcapturing an existing image of the operating system being executed onthe plurality of nodes. Upon receiving a patch, the staging service isconfigured to employ a virtual machine to copy the patch to the existingimage and reboot, thereby installing the patch to the existing image.The staging service may also separate a variant state and an invariantstate of the existing image, process the states separately (e.g.,perform individual software modifications to each of the states), andrecombine the states to form an updated image. This updated image isconfigured to function as a new operating system upon simply beingstored to the nodes—without conducting a second installation of thepatch locally at each node. Accordingly, because the installation of thepatch is remote and does not take into account the varied computingenvironments inherent to each of the nodes, the new operating system isconsistent and determinant across the nodes.

Accordingly, in one aspect, embodiments of the present invention relateto one or more computer-readable media that has computer-executableinstructions embodied thereon that, when executed, perform a method fordeploying an updated image to one or more nodes propagated throughout adistributed computing platform. In embodiments, the method includesreceiving an indication to install a patch to an operating systemresiding on the nodes of a data center. Typically, the existing image ofthe operating system is stored at a staging service. The method furtherincludes generating the updated image by applying the patch to theexisting image at a virtual machine. The process of generating theupdated image may comprise, at least, the following steps: separatingthe existing image into a variant state and an invariant state of theoperating system; performing an installation of the patch on the variantstate and/or the invariant state; and recombining the variant state andthe invariant state to form the updated image. This updated image isreplicated and pushed to the nodes of the data center. Incident toloading the updated image of a new operating system, the nodes areconfigured to utilize the new operating system without performing anindividual second installation of the patch.

In another aspect, embodiments of the present invention relate to acomputerized method for upgrading an operating system on a computingdevice without installing a patch at the computing device. Initially,the computing device provides the operating system. An existing image ofthe operating system is stored at a remotely located staging service. Inembodiments, the operating system is composed of at least onedifferencing disk that overlays a virtual disk. In operation, a serviceapplication supported by the operating system is allowed to write datato the differencing disk and is prevented from writing to the virtualdisk. The computing device is configured to execute the computerizedmethod that includes following instructions to enter an offlinecondition and downloading an updated image of a new operating system.

Downloading the updated image may include receiving the updated imagecomprising an updated virtual disk and storing the updated virtual disksuch that the new operating system is ready to use upon booting the harddrive. As discussed more fully below, the updated virtual image includesan updated virtual disk and at least one empty differencing disk that iscleared of externally-written data. Typically, the updated image isgenerated by installing a patch to the existing image at the stagingservice. The computerized method may further involve the steps offollowing instructions to enter an online condition by booting a harddrive of the computing device and utilizing the new operating systemwithout performing an installation of the patch.

In a third aspect, an exemplary computer system is provided forperforming a method that deploys a patch to one or more nodes of a datacenter upon performing a single installation at a virtual computer. Inembodiments, the computer system includes a processing unit coupled to acomputer storage medium that stores a plurality of computer softwarecomponents executable by the processing unit. Initially, the computersoftware components include a fabric controller, a staging service, avirtual machine, and the nodes. The fabric controller is configured formaking a determination to roll out the patch to the operating system andcommunicating the indication to install the patch. Incident to receivingthe indication to install the patch, the staging service conveys to thevirtual machine an existing image of an operating system stored on eachof the nodes. The virtual machine that executes an application processfor generating an updated image by performing an installation of thepatch on the existing image, and for iteratively propagating the updatedimage to the nodes. The nodes are configured for replacing the operatingsystem with the updated image of a new operating system withoutperforming an installation of the updated image.

Embodiments, of the present invention relate to deploying an upgrade tooperating systems accommodated by nodes that are propagated throughout adistributed computing environment, or data center. In one instance, thenodes represent computing devices capable of running role instances ofthe service application within a distributed computing platform. As usedherein, the term “roles” or role instances is not meant to be limiting,but may include any replication of at least one role, which generallyresembles a component program that supports particular functionalaspects of a service application.

As such, “roles” provide a template description of a functional portionof the service application. Roles are described by indicating thecomputer code implementing the role, the conditions within the hostingenvironment that are required by the role, configuration settings to beapplied to the role, and the role's set of endpoints for communicationwith other roles, elements, etc. In one instance, the role'sconfiguration settings may include collective settings which are sharedby all instances of the role, or individual settings that are particularto each instance of the role. In an exemplary embodiment, the roles eachrepresent a particular class of component of the service application.Typically, the service model delineates how many instances of each ofthe one or more roles to place within the data center, where each of theinstances is a replication of the particular class of component, orrole. In other words, each role represents a collection of instances ofeach class of components, where the service application may have anynumber of classes of components for carrying out functions thereof.

Having briefly described an overview of embodiments of the presentinvention, an exemplary operating environment suitable for implementingembodiments of the present invention is described below.

Referring to the drawings in general, and initially to FIG. 1 inparticular, an exemplary operating environment for implementingembodiments of the present invention is shown and designated generallyas computing device 100. Computing device 100 is but one example of asuitable computing environment and is not intended to suggest anylimitation as to the scope of use or functionality of embodiments of thepresent invention. Neither should the computing environment 100 beinterpreted as having any dependency or requirement relating to any oneor combination of components illustrated.

Embodiments of the present invention may be described in the generalcontext of computer code or machine-useable instructions, includingcomputer-executable instructions such as program components, beingexecuted by a computer or other machine, such as a personal dataassistant or other handheld device. Generally, program componentsincluding routines, programs, objects, components, data structures, andthe like refer to code that performs particular tasks, or implementsparticular abstract data types. Embodiments of the present invention maybe practiced in a variety of system configurations, including hand-helddevices, consumer electronics, general-purpose computers, specialtycomputing devices, etc. Embodiments of the invention may also bepracticed in distributed computing platforms where tasks are performedby remote-processing devices that are linked through a communicationsnetwork.

With continued reference to FIG. 1, computing device 100 includes a bus110 that directly or indirectly couples the following devices: memory112, one or more processors 114, one or more presentation components116, input/output (I/O) ports 118, I/O components 120, and anillustrative power supply 122. Bus 110 represents what may be one ormore busses (such as an address bus, data bus, or combination thereof).Although the various blocks of FIG. 1 are shown with lines for the sakeof clarity, in reality, delineating various components is not so clear,and metaphorically, the lines would more accurately be grey and fuzzy.For example, one may consider a presentation component such as a displaydevice to be an I/O component. Also, processors have memory. Theinventors hereof recognize that such is the nature of the art andreiterate that the diagram of FIG. 1 is merely illustrative of anexemplary computing device that can be used in connection with one ormore embodiments of the present invention. Distinction is not madebetween such categories as “workstation,” “server,” “laptop,” “hand-helddevice,” etc., as all are contemplated within the scope of FIG. 1 andreference to “computer” or “computing device.”

Computing device 100 typically includes a variety of computer-readablemedia. By way of example, and not limitation, computer-readable mediamay comprise Random Access Memory (RAM); Read Only Memory (ROM);Electronically Erasable Programmable Read Only Memory (EEPROM); flashmemory or other memory technologies; CDROM, digital versatile disks(DVDs) or other optical or holographic media; magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium that can be used to encode desired information andbe accessed by computing device 100.

Memory 112 includes computer storage media in the form of volatileand/or nonvolatile memory. The memory may be removable, nonremovable, ora combination thereof. Exemplary hardware devices include solid-statememory, hard drives, optical-disc drives, etc. Computing device 100includes one or more processors that read data from various entitiessuch as memory 112 or I/O components 120. Presentation component(s) 116present data indications to a user or other device. Exemplarypresentation components include a display device, speaker, printingcomponent, vibrating component, etc. I/O ports 118 allow computingdevice 100 to be logically coupled to other devices including I/Ocomponents 120, some of which may be built-in. Illustrative componentsinclude a microphone, joystick, game pad, satellite dish, scanner,printer, wireless device, etc.

Turning now to FIG. 2, a block diagram is illustrated showing adistributed computing environment 200, suitable for use in implementingembodiments of the present invention. Generally, the distributedcomputing environment 200 is configured to generate updated images 231,232, and 233 and deploy them to nodes of a data center 210. Thedistributed computing environment 200 includes the data center 210configured to accommodate and support operation of component programs,or instances of roles, of a particular service application according tothe fabric controller 235. It will be understood and appreciated bythose of ordinary skill in the art that the data center 210 shown inFIG. 2 is merely an example of one suitable for accommodating one ormore service applications and is not intended to suggest any limitationas to the scope of use or functionality of embodiments of the presentinvention. Neither should the data center 210 be interpreted as havingany dependency or requirement related to any single resource,combination of resources, combination of nodes (e.g., nodes A 211, B212, and C 213), or set of APIs to access the resources and/or nodes.Further, although the various blocks of FIG. 2 are shown with lines forthe sake of clarity, in reality, delineating various components is notso clear, and metaphorically, the lines would more accurately be greyand fuzzy.

Per embodiments of the present invention, the nodes A 211, B 212, and C213 that execute the operating systems may be described within thecontext of a distributed computing environment 200 of a data center 210.The data center 210 includes various resources, such as a stagingservice 240, a virtual machine 245, and the nodes A 211, B 212, and C213, that are interconnected. In addition, the role instance(s) (notshown) that reside on the nodes A 211, B 212, and C 213, and supportoperation of service applications, may be interconnected via applicationprogramming interfaces (APIs). In one instance, one or more of theseinterconnections may be established via a network cloud (not shown).These resources, as described herein, may include software components(e.g., fabric controller 235) as well as tangible computing elements,such as nodes A 211, B 212, and C 213. The network cloud interconnectsthese resources such that the role instances of service applications,which may be distributably placed across various physical resources, mayrecognize a location of other instances in order to establishcommunication therebetween. In addition, the network cloud facilitatesthis communication over channels connecting the instances of the serviceapplication and any other elements. By way of example, the network cloudmay include, without limitation, one or more local area networks (LANs)and/or wide area networks (WANs). Such networking environments arecommonplace in offices, enterprise-wide computer networks, intranets,and the Internet. Accordingly, the network is not further describedherein.

Generally, the data center 210 provides underlying support for operationof the service application(s) within the distributed computingenvironment 200. In particular, the nodes A 211, B 212, and C 213 mayaccommodate a plurality of component programs, or the role instances ofthe service application, running independently on separate operatingsystems installed on one or more of the nodes A 211, B 212, and C 213.As described supra, the term “node” is not meant to be limiting and mayencompass any computing device capable of executing the role instancesin support of the service application. Moreover, the nodes A 211, B 212,and C 213 may represent any form of computing devices, such as, forexample, a personal computer, a desktop computer, a laptop computer, ahandheld device, a mobile handset, consumer electronic device, and thelike. In one aspect, the nodes A 211, B 212, and C 213 represent acomputing device of a plurality of distributed computing devicesinterconnected via the network cloud. Generally, these distributedcomputing devices are capable of executing a plurality of instances ofvarious roles of the service application. In one instance, a particularnode may be capable of accommodating two or more role instance(s). Theserole instances may run on the nodes A 211, B 212, and C 213 in completeisolation, in partial communication with instances of other roles, or inan interactive state with one or more other roles of the serviceapplication.

Typically, each of the nodes A 211, B 212, and C 213 include, or islinked to, some form of a computing unit (e.g., central processing unit,microprocessor, etc.) to support operations of the component(s) runningthereon. As utilized herein, the phrase “computing unit” generallyrefers to a dedicated computing device with processing power and storagememory, which supports operating software that underlies the executionof software, applications, and computer programs thereon. In oneinstance, the computing unit is configured with tangible hardwareelements, or machines, that are integral, or operably coupled, to thenodes A 211, B 212, and C 213 to enable each device to perform a varietyof processes and operations. In another instance, the computing unit mayencompass a processor (not shown) coupled to the computer-readablemedium accommodated by each of the nodes A 211, B 212, and C 213.Generally, the computer-readable medium stores, at least temporarily, aplurality of computer software components that are executable by theprocessor. As utilized herein, the term “processor” is not meant to belimiting and may encompass any elements of the computing unit that actin a computational capacity. In such capacity, the processor may beconfigured as a tangible article that processes instructions. In anexemplary embodiment, processing may involve fetching,decoding/interpreting, executing, and writing back instructions.

Also, beyond processing instructions, the processor may transferinformation to and from other resources that are integral to, ordisposed on, the nodes A 211, B 212, and C 213. Generally, resourcesrefer to software and hardware mechanisms that enable the nodes A 211, B212, and C 213 to perform a particular function.

With continued reference to FIG. 2, the staging service 240 may beinstalled to a node of the data center 210, or to various nodespropagated throughout a distributed computing platform 200. Initially,the staging service 240 may be a software application that generates anupdate to an existing image of an operating system accommodated on oneor more of the nodes A 211, B 212, and C 213. As used herein, the term“image” is not meant to be limiting, but may encompass any data orinformation that is related to an operating system residing at a remotemachine. In one instance, an image is a representation of both a variantstate and invariant state of an operating system. In another instance,the term image refers to all the bits that are required to run theoperating system, thus, exposing the state of the operating system.Accordingly, the “existing image” may refer to a snapshot that capturesvarious characteristic of the latest operating system deployedthroughout the data center 210. As such, the existing image issubstantially a pristine copy the current operating system within noexternal data written thereto.

In embodiments, the staging service 240 is invoked to update an existingimage. Updating the existing image and subsequently deploying it allowsthe distributed computing environment 200 to generate, modify, andcapture the variant state and the invariant state remotely, without theneed to act directly on the target nodes intended to receive an update.Invoking the staging service 240 to update the existing image may resultfrom a variety of triggers. For instance, the trigger to generate theupdated image may be a timer mechanism that sends a signal at theexpiration of a determined interval (e.g., four months), a real-timeresponse to detecting a new patch to be installed, or at the request ofanother component. By way of example, the fabric controller 235 may makea determination to roll out a patch to the operating system andcommunicate an indication 255 to install the patch to the stagingservice.

Upon being instructed to generate the updated image, the staging service240 may carry out these instructions by implementing various procedures.In one instance, generating the updated image may include engaging thevirtual machine 245 that can install a patch to an image in isolationwithout placing an active node in an offline condition. As used herein,the phrase “virtual machine” is not meant to be limiting, and may referto any software, application, or program that is executed by aprocessing unit to achieve a particular directive. Upon engaging thevirtual machine 245, the staging service 240 may transfer the existingimage 250, and any other information pertinent to an update, to thevirtual machine 250. Incident to receiving the existing image 250, thevirtual machine 245 may execute an application process for generating anupdated image. One goal of the application process is to perform aninstallation of a patch on the existing image 250, and iterativelypropagate the updated image to the A 211, B 212, and C 213. Ininstances, installing the patch to the existing image 250 at a virtualmachine 245 includes targeting one or more of the nodes 211 A, 212 B,and 213 C, selecting differencing disks based upon attributes of thenodes 211 A, 212 B, and 213 C that are targeted for receiving the patch,combining the selected differencing disk with a virtual disk uponinstalling the patch thereto, and directing the resultant updated images231, 232, and 233 to the appropriate targeted nodes 211 A, 212 B, and213 C, respectively. Once the nodes 211 A, 212 B, and 213 C receive therespective updated images 231, 232, and 233 that are targeted thereto,each of the nodes 211 A, 212 B, and 213 C replace their operatingsystems with the updated image 231, 232, and 233 of a new operatingsystem without performing an installation of the applied patch.Accordingly, the nodes 211 A, 212 B, and 213 C may utilize the newoperating system to support operations of the role instances assignedthereto.

In a particular embodiment, each of the nodes 211 A, 212 B, and 213 Cmay have an operating system running thereon that is replaced by theupdated image of the new operating system. The operating systems to beretired may comprise an invariant state (i.e., portion of the operatingsystem that does not change) and an variant state (e.g., portion of theoperating system that is affected by roles instances and otherapplications running on the operating system). In one instance, thevariant state includes a registry to which applications write data anduse as a temporary memory, or cache. Accordingly, the invariant states221, 222, and 223 of the nodes 211 A, 212 B, and 213 C, respectively,may vary in content or state. Because the invariant states 230 of theoperating systems loaded to the nodes 211 A, 212 B, and 213 C disallowdata being written thereto, the invariant states 230 are common to eachof the nodes of the data center 210.

Returning to the process of generating an updated image, the virtualmachine 245 is instructed to apply the patch to the existing image 250.In other embodiments, the virtual machine 245 automatically applies thepatch upon accepting the existing image 250. Applying the patch mayinclude mounting the existing image 250 (e.g., a pristine representationof the current operating system) copy the patch into it, and set acommand in the existing image that instructs the virtual machine 245,upon reboot, to finish running the patch. That is, when the virtualmachine 245 is booted, the patch finishes running (installing itself).

Upon installing the patch, the virtual machine 245 may be used to testthe functionality of the updated image. Implementing testing is usefulto ensure that the installed patch is functioning according tospecification. Upon reaching satisfaction that the updated image isfunctioning properly, the virtual machine 245 is shut down and theupdated image is saved, thereby replacing the existing image 250. Savingthe updated image may include several steps, such as capturing asnapshot of the existing image 250 with the patch installed, and savingthe snapshot as the updated image. In the future, the updated image maybe utilized for upgrading the new operating system of the nodes 211 A,212 B, and 213 C upon receiving a subsequent indication to install apatch.

In other embodiments of the process of generating the updated image, theexisting image 250 of the current operating system may be divided into avariant state and an invariant state of the operating system. Thesestates may be encapsulated as artifacts, where the artifacts comprise avirtual disk (for maintaining the invariant state) and at least onedifferencing disk (for maintaining aspects of the variant state). Inembodiments, the artifacts may comprise a plurality of differencingdisks that each maintain a portion of the variant state, where each canbe stacked on top of each other and on the virtual disk to build thecomplete operating system. In embodiments, the virtual disk represents apristine model of the operating system that is common to each of thetargeted nodes.

Upon dividing the operating system into the virtual disk and thedifferencing disks, an installation of the patch may be performed on theinvariant state of the virtual disk and/or the variant state of thedifferencing disk. Upon completing the installation(s), and optionallythe testing, the variant state and the invariant state are recombined toform the updated image. In one instance, the generated variant state isthen stored in the staging service 240 ready to be deployed togetherwith the invariant state to the appropriate nodes.

As used herein, the term “artifacts” is not meant to be limiting, butmay encompass any representative model of a section, attribute, or setof values of an operating system. Accordingly, artifacts are not limitedto simply a virtual disk and one or more differencing disks. Further,artifacts may be created upon capturing an image of an operating systemor may be dynamically generated during the processing of the image.Further, upon generating the updated image, the updated image may bestored in an artifact referred to as a base virtual hard drive (VHD).The base VHD is generally a file that looks like a hard drive. In otherembodiments, just the common pristine model, or virtual disk, is storedto the base VHD. In operation, the base VHD may be deployed to the nodes211 A, 212 B, and 213 C to install the operating system, or may beretained in the staging service for 240 in order to maintain a cleancopy of the latest operating system deployed.

Upon generating the updated image (e.g, updated images 231, 232, and233), the updated images are replicated and each replication isdistributed and loaded to the nodes 211 A, 212 B, and 213 C,respectively. In embodiments, during loading, the virtual disk of theupdated image replaces the invariant state 230 of the operating systemsresiding at the nodes 211 A, 212 B, and 213 C, while the differencingdisk of the updated image replaces the variant states 221, 222, and 223of the operating systems residing at the nodes 211 A, 212 B, and 213 C,respectively. Accordingly, the data written to the variant states 221,222, and 223 is lost and the operating system are provided one or morestacked differencing disks that include clean variant states. As such,the updated images of the new operating system (e.g., fully transformedreplications of an operating system with an installed patch), uponloading, are consistent across the nodes 211 A, 212 B, and 213 C becausethey are not subject to variations caused by internal inconsistencies ofthe nodes 211 A, 212 B, and 213 C.

In embodiments, deployment comprises pushing, or propagating, theupdated image to the nodes 211 A, 212 B, and 213 C based on apersistence algorithm. Generally, the persistence algorithm selects anorder and timing for removing the nodes 211 A, 212 B, and 213 C to anoffline condition to ensure that active redundant nodes are availablefor supporting the particular functional aspects of the serviceapplication that are supported by nodes in the data center 210. From theperspective of the nodes 211 A, 212 B, and 213 C, deployment involvesfollowing instructions to enter an offline condition, downloading theupdated image of the new operating system, and following instructions toenter an online condition by booting a hard drive of the computingdevice. Accordingly, the nodes 211 A, 212 B, and 213 C are configured toutilize the new operating system without performing an installation ofthe patch. Further, in embodiments, the nodes 211 A, 212 B, and 213 Care able to retain the common virtual disk as part of the operatingsystem as the hardware therein is configured with a common set of valuesthat allow them to run a single base VHD.

This distributed computing environment 200 is but one example of asuitable environment that may be implemented to carry out aspects of thepresent invention, and is not intended to suggest any limitation as tothe scope of use or functionality of the invention. Neither should theillustrated exemplary system architecture of the distributed computingsystem 200 be interpreted as having any dependency or requirementrelating to any one or combination of the components 235, 240, and 245as illustrated. In some embodiments, one or more of the components 235,240, and 245 may be implemented as stand-alone devices. In otherembodiments, one or more of the components 235, 240, and 245 may beintegrated directly into the nodes. It will be understood by those ofordinary skill in the art that the components 235, 240, and 245illustrated in FIG. 2 are exemplary in nature and in number and shouldnot be construed as limiting.

With reference to FIG. 3, a graphical representation is shown of anexemplary image 300 of an operating system that is separated intomultiple states, in accordance with an embodiment of the presentinvention. As illustrate, the differencing disk A 310 and differencingdisk B 315 are stacked and each maintains a portion of the variant state325 of an operating system. These differencing disks A 310 and B 315 mayoverlay the virtual disk 305 that maintains the invariant state 320 ofthe operating system. During operation, the variant state 325accumulates data and other modifications thereto. Accordingly, uponreplacing the differencing disks A 310 and B 315 with the differencingdisks of the updated image (e.g., by erasing the overlay) the invariantstate 325 is removed and a pristine image is restored. That is, uponapplying the updated image, the overlay is not reinstalled, but thrownaway. Generally, the invariant state is not modified. This may be due toan application model that ensures that the state of the role instancesare maintained outside the invariant state 320. As such, the applicationmodel ensures that anything the application chooses to write is used fortemporary memory and can be recreated by the application if access isdenied to a cache.

In embodiments, the differencing disks A 310 and B 315 are linked to theunderlying virtual disk 305 and provide a composite view of the contentsof both to applications running thereon. Accordingly, adding,subtracting, or replacing the differencing disks A 310 and B 315 allowsthe staging service to represent unique customized physicalinstallations of the operating system. By way of example, thedifferencing disk A 310 may be an internet information service (IIS)element that is combined with the virtual disk 305 to create aspecialized version of an operating system with IIS incorporated. Thedifferencing disk B 310 may be another windows-optional component thatprovides an interface with the running application. Accordingly, theapplication's view comprises the three disks 305, 310, and 315 stackedon top of each other. Thus, each differencing disk can have a smallamount of customization to create the unique operating systemenvironment that is adaptable to support a variety of applications andloads. As such, in instances, customization is directed toward differentservices or applications.

Some examples of the variant state 325 that gets generated and stored inthe differencing disks include the secrets from joining a domain. When acomputer joins a domain, it exchanges secret keys with the domain. Thesekeys are stored and accessed upon attempting to communicate with thedomain so that the machine is recognized. Because the key is now knownto the data center, it may be sent to each node that is reached duringdeployment of the updated image. That is, the data center can leveragethe collection of a key at one node and distribute the key to any othernodes that are designated to talk with the domain, thereby avoidingrepeating the initial action of joining a domain. In another example,the variant state 325 includes a unique machine identifier that is sentindividually to the nodes. In yet another example, the variant state 325comprises custom configuration data generated when operating systemroles are installed, removed, etc.

Although three different configurations of the variant state 325 havebeen described, it should be understood and appreciated by those ofordinary skill in the art that other types of suitable configurationsand content may be used, and that embodiments of the present inventionare not limited to those variant-state-models described herein.

Turning now to FIG. 4, a flow diagram is shown that illustrates anoverall method 400 for deploying an updated image to one or more nodespropagated throughout a distributed computing platform, in accordancewith an embodiment of the present invention. Accordingly, in one aspect,the method 400 includes receiving an indication to install a patch to anoperating system residing on the nodes of a data center (e.g. utilizingthe staging service 240 of FIG. 2). This is depicted at block 410.Typically, the existing image of the operating system is stored at thestaging service. As depicted at block 420, the method 400 furtherincludes generating the updated image by applying the patch to theexisting image at a virtual machine (e.g., utilizing the virtual machine245 of FIG. 2). The process of generating the updated image maycomprise, at least, the following steps: separating the existing imageinto a variant state and an invariant state of the operating system (seeblock 430); performing an installation of the patch on the variant stateand/or the invariant state (see block 440); and recombining the variantstate and the invariant state to form the updated image (see block 450).This updated image is replicated and pushed to the nodes of the datacenter, as depicted at block 460 and 470. Incident to loading theupdated image of a new operating system, the nodes are generallyconfigured to utilize the new operating system without performing anindividual second installation of the patch.

With reference to FIG. 5, a flow diagram is shown that illustrates anoverall method 500 for upgrading an operating system on a computingdevice without installing a patch at a computing device, in accordancewith an embodiment of the present invention. Initially, the computingdevice provides the operating system, as depicted at block 510. Anexisting image of the operating system is stored at a remotely locatedstaging service. In embodiments, the operating system is composed of atleast one differencing disk that overlays a virtual disk. In operation,a service application supported by the operating system is allowed towrite data to the differencing disk and is prevented from writing to thevirtual disk. The computing device (e.g., node A 211, B, 212, or C 213of FIG. 2) is configured to execute the computerized method thatincludes following instructions to enter an offline condition (see block520) and downloading an updated image of a new operating system (seeblock 530).

Downloading the updated image may include receiving the updated imagecomprising an updated virtual disk (see block 540) and storing theupdated virtual disk such that the new operating system is ready to useupon booting the hard drive (see block 550). As discussed more fullybelow, the updated virtual image includes an updated virtual disk and atleast one empty differencing disk that is cleared of externally-writtendata. Typically, the updated image is generated by the installing apatch to the existing image at the staging service. The computerizedmethod may further involve the steps of following instructions to enteran online condition by booting a hard drive of the computing device (seeblock 560) and utilizing the new operating system without performing aninstallation of the patch (see block 570).

Embodiments of the present invention have been described in relation toparticular embodiments, which are intended in all respects to beillustrative rather than restrictive. Alternative embodiments willbecome apparent to those of ordinary skill in the art to whichembodiments of the present invention pertain without departing from itsscope.

From the foregoing, it will be seen that this invention is one welladapted to attain all the ends and objects set forth above, togetherwith other advantages which are obvious and inherent to the system andmethod. It will be understood that certain features and sub-combinationsare of utility and may be employed without reference to other featuresand sub-combinations. This is contemplated by and is within the scope ofthe claims.

What is claimed is:
 1. A computer system to deploy updated images tonodes in data centers, the system comprising: a staging service toinitialize a virtual machine to update an existing image of an operatingsystem using a patch, the existing image having a variant state and aninvariant state of the operating system; the virtual machine to generatean updated image of the existing image, generating the updated imagecomprises: separating the existing image into a variant state and aninvariant state; performing an installation of the patch on the variantstate; and recombining the variant state and the invariant state to formthe updated image; and one or more nodes to receive and run the updatedimage without performing an installation of the updated image on the oneor more nodes, the updated image is received from the staging servicethat remotely stores the existing image and the updated image.
 2. Thecomputer system of claim 1, further comprising a fabric controller tomake a determination to roll out the patch to the operating system andcommunicate an indication to staging service to generate an updatedimage.
 3. The computer system of claim 1, wherein the virtual machinesupports an existing image having a virtual disk linked to adifferencing disk, the virtual disk comprises the invariant state of theoperating system and the differencing disk stores the variant state ofthe operating system, wherein the variant disk and the invariant diskare configured such that a service application supported by theoperating system writes data to the differencing disk and does not writedata to the virtual disk.
 4. The computer system of claim 1, generatingthe updated image at the virtual machine further comprises: mounting theexisting image on the virtual machine, wherein the existing image is apristine model of the operating system that excludes data written to theoperating system when running on the one or more nodes; copying thepatch to the mounted existing image; setting a command within theexisting image that executes upon activating the virtual machine;activating the virtual machine to cause the command to execute to beinvoked, wherein, during execution, the command instructs the existingimage to install the patch; capturing a snapshot of the existing imagewith the patch installed; saving the snapshot as the updated image; andutilizing the updated image for upgrading the operating system of theone or more nodes.
 5. The computer system of claim 1, wherein the one ormore nodes are further configured to: initiate an offline condition;download the updated image; and boot to run an operating system of theupdated image without reinstalling the operating system of the updatedimage.
 6. The computer system of claim 5, wherein downloading theupdated image further comprises the one or more nodes configured to:receive the updated image comprising an updated virtual disk and adifferencing disk that is empty and cleared of externally-written data;store the updated virtual disk such that a new operating system is readyto be used upon booting; and replace a differencing disk on the one ormore nodes with the differencing disk of the updated image.
 7. Acomputer-implemented for upgrading operating systems computing deviceswithout installing patches on the computing devices, the methodcomprising: downloading an updated image of an operating system, theupdated image is remotely stored on a staging service, the stagingservice initializes a virtual machine to generate the updated image witha patch that is installed on the operating system, the virtual machinesupports an existing image having a virtual disk and a differencingdisk, the virtual disk comprises the invariant state of the operatingsystem and the differencing disk stores the variant state of theoperating system, wherein the variant disk and the invariant disk areconfigured to cause a service application supported by the operatingsystem to write data to the differencing disk and not write to thevirtual disk; booting to the operating system of the update image; andutilizing the operating system of the updated image without performingan installation of the patch.
 8. The computer-implemented method ofclaim 7, wherein generating the updated image at the staging servicecomprises: separating the existing image into the variant state and aninvariant state; performing an installation of the patch on the variantstate; and recombining the variant state and the invariant state to formthe updated image.
 9. The computer-implemented method of claim 7, themethod further comprising: receiving the updated image comprising anupdated virtual disk and a differencing disk that is empty and clearedof externally-written data; storing the updated virtual disk such that anew operating system is ready to be used upon booting; and replacing adifferencing disk on the one or more nodes with the differencing disk ofthe updated image.
 10. The computer-implemented method of claim 7,wherein the updated image is propagated to be downloaded based on apersistence algorithm, wherein the persistence algorithm selects anorder and timing for removing one or more nodes, that download updatedimages, to an offline condition to ensure that active redundant nodesare available for supporting the particular functional aspects of theservice application that are supported by the one or more nodes.
 11. Oneor more computer storage hardware memory having computer-executableinstructions embodied thereon that, when executed, perform a method fordeploying updated images to one or more nodes propagated throughout adistributed computing platform, the method comprising: receiving anindication to install a patch to an operating system residing on one ormore nodes of a data center, wherein an existing image of the operatingsystem is stored at a staging service remotely located from the one ormore nodes; generating the updated image by applying the patch to theexisting image at a virtual machine, the virtual machine supports anexisting image having a virtual disk and a differencing disk, thevirtual disk comprising the invariant state of the operating system andthe differencing disk stores the variant state of the operating system,wherein generating the updated image comprises: separating the existingimage into a variant state and an invariant state of the operatingsystem; performing an installation of the patch on the variant state;and recombining the variant state and the invariant state to form theupdated image; pushing the updated image to the one or more nodes of adata center, wherein the one or more nodes are configured to utilize theupdated image of the operating system without performing an installationof the updated image.
 12. The media of claim 11, wherein generating theupdated image by applying the patch to the existing image at a virtualmachine further comprises: copying the patch to the mounted existingimage; and setting a command within the existing image that executesupon activating the virtual machine.
 13. The media of claim 11, whereingenerating the updated image by applying the patch to the existing imageat a virtual machine further comprises activating the virtual machine tocause the command to execute to be invoked, wherein, during execution,the command instructs the existing image to install the patch.
 14. Themedia of claim 11, wherein generating the updated image by applying thepatch to the existing image at a virtual machine further comprises:capturing a snapshot of the existing image with the patch installed;saving the snapshot as the updated image; and utilizing the updatedimage for upgrading the operating system of the one or more nodes. 15.The media of claim 11, wherein the method further comprises separatingthe existing image of the operating system into at least onedifferencing disk and a virtual disk, wherein the virtual disk is apristine model of the operating system.
 16. The media of claim 15,wherein the virtual disk is configured to accommodate the invariantstate of the operating system that is common to each of the one or morenodes of the data center.
 17. The media of claim 15, wherein the atleast one differencing disk is configured to accommodate the variantstate of the operating system that is affected by the role instances ofthe service application running on the one or more nodes.
 18. The mediaof claim 15, wherein generating the updated image by applying the patchto the existing image at a virtual machine further comprises: selectingat least one empty differencing disk based upon attributes of the one ormore nodes that are targeted for receiving the updated image; andcombining the at least one empty differencing disk with the virtual diskupon installing the patch thereto.
 19. The media of claim 18, whereinselecting at least one empty differencing disk is based upon attributesof the one or more nodes that are targeted for receiving the updatedimage comprises: recognizing the role instances of the serviceapplication running on the one or more target nodes; and identifying theat least one empty differencing disk that adequately supportsfunctionality of the one or more target node.
 20. The media of claim 18,wherein pushing the updated image to the one or more nodes of the datacenter comprises: remove the one or more nodes to an offline condition;loading the updated image to the one or more offline nodes; and bootingthe one or more offline nodes, wherein the process of booting does notreinstall the operating system carried in the updated image.